package Modelo;
import java.awt.Image;
import java.awt.Toolkit;
import org.w3c.dom.Document;
import org.w3c.dom.Element;


public class Tunel extends Bloque {

	private boolean haciaDerecha;
	private Image imagenTunelDerecha;
	private Image imagenTunelIzquierda;

	private Integer prioridad;

	public Tunel(Posicion posicion, Planeta planeta, boolean derecha){
		super(posicion,planeta);
		this.haciaDerecha=derecha;
		this.prioridad=1;
		imagenTunelDerecha = Toolkit.getDefaultToolkit().getImage("imagenes/tunelDerecha.png");
		imagenTunelIzquierda = Toolkit.getDefaultToolkit().getImage("imagenes/tunelIzquierda.png");

	}
	
	public Tunel (Element xmlElement){
		super(xmlElement);
		this.haciaDerecha=Boolean.parseBoolean(xmlElement.getAttribute("haciaDerecha"));
		System.out.println(Boolean.parseBoolean(xmlElement.getAttribute("haciaDerecha")));                 
		this.prioridad=3;
		imagenTunelDerecha = Toolkit.getDefaultToolkit().getImage("imagenes/tunelDerecha.png");
		imagenTunelIzquierda = Toolkit.getDefaultToolkit().getImage("imagenes/tunelIzquierda.png");
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "u";
	}

	public boolean haciaDerecha(){
		return this.haciaDerecha==true;
	}

	@Override
	public void actuar(Pooglin pooglin) {
		// TODO Auto-generated method stub
		if (pooglin.haciaDerecha()&&this.haciaDerecha()){
			if(!abajoPooglin(pooglin))
				pooglin.moverDiagonalArriba();			
		}else{
			if (!pooglin.haciaDerecha()&&!this.haciaDerecha()){
				if(!abajoPooglin(pooglin))
					pooglin.moverDiagonalArriba();			
			}else{
				pooglin.caminar();			
			}
		}
	}

	@Override
	public Integer getPrioridad() {
		// TODO Auto-generated method stub
		return this.prioridad;
	}

	@Override
	public void romper(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void excavarUnBloque(Pooglin pooglin) {
		// TODO Auto-generated method stub
		this.actuar(pooglin);
	}

	@Override
	public void transportarPooglin(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin va en sentido hacia derecha
		if ((pooglin.haciaDerecha())&&
			(adelantePooglinDerecha(pooglin))){
			pooglin.caminar();
		}
		// Si el pooglin va en sentido contrario
		else{
			if (adelantePooglinIzquierda(pooglin))
					pooglin.caminar();
		}
	}

	@Override
	public void construirTunel(Pooglin pooglin) {
		// TODO Auto-generated method stub
		// Si el pooglin va en sentido hacia derecha
		if ((pooglin.haciaDerecha())&&
				(adelanteDiagonalArribaDerecha(pooglin))){
			pooglin.moverDiagonalArriba();
		}
		// Si el pooglin va en sentido contrario
		else{
			if (adelanteDiagonalArribaIzquierda(pooglin))
					pooglin.moverDiagonalArriba();
		}
	}

	public Image getImagen() {
		if (haciaDerecha())
			return this.imagenTunelDerecha;
		else{
			return this.imagenTunelIzquierda;
		}
	}
	
	public Element toXml(Document doc) {
		// TODO Auto-generated method stub
		Element xmlElement = doc.createElement("Bloque");
		xmlElement.setAttribute("Tipo", "Tunel");
		xmlElement.setAttribute("prioridad", ""+this.prioridad);
		xmlElement.setAttribute("haciaDerecha", ""+this.haciaDerecha);
		xmlElement.appendChild(this.getPosicion().toXml(doc));
		
		return xmlElement;
	}

}
